﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.UI.Bovespa.Clientes.Communication.Bovespa.Cliente.TipoConta;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Clientes.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Translator de Tipo de Conta
    /// </summary>
    public class TipoConta
    {
        #region Métodos
        /// <summary>
        /// Traduz de TipoContaResponse para Model.TipoConta
        /// </summary>
        /// <param name="from">TipoContaResponse</param>
        /// <returns>Model.TipoConta</returns>
        public Model.TipoConta ToTipoContaResponse(TipoContaResponse from)
        {
            Model.TipoConta to = new Model.TipoConta();
            to.ApelidoCliente = from.ApelidoCliente;
            to.CodigoCliente = from.CodigoCliente;
            to.Especialista = from.Especialista;
            if (from.TipoCliente != null)
            {
                switch (from.TipoCliente.Value)
                {
                    case Bovespa.Cliente.TipoConta.TipoCliente.AdministradoConcorrente:
                        to.TipoCliente = Model.Enum.TipoCliente.AdministradoConcorrente;
                        break;
                    case Bovespa.Cliente.TipoConta.TipoCliente.CarteiraPropria:
                        to.TipoCliente = Model.Enum.TipoCliente.CarteiraPropria;
                        break;
                    case Bovespa.Cliente.TipoConta.TipoCliente.ContaErro:
                        to.TipoCliente = Model.Enum.TipoCliente.ContaErro;
                        break;
                    default:
                        break;
                }
            }

            return to;

        }

        /// <summary>
        /// Traduz de Lista de TipoContaResponse para Lista de Model.TipoConta
        /// </summary>
        /// <param name="from">Lista de TipoContaResponse</param>
        /// <returns>Lista de Model.TipoConta</returns>
        public ModelCollection<Model.TipoConta> ToTipoContaResponse(List<TipoContaResponse> from)
        {
            ModelCollection<Model.TipoConta> to = new ModelCollection<Model.TipoConta>();
            foreach (TipoContaResponse tipoConta in from)
                to.Add(ToTipoContaResponse(tipoConta));

            return to;
        }

        #endregion
    }
}
